home *** CD-ROM | disk | FTP | other *** search
/ Gamers Delight 2 / Gamers Delight 2.iso / Aminet / game / board / UChessSrc.lha / movemem.asm < prev    next >
Assembly Source File  |  1994-07-28  |  2KB  |  134 lines

  1.     CSECT   text
  2. ;        XDEF    @MoveMem
  3.         XDEF    @MoveMem128
  4.         XDEF    @ClearMem
  5. ; D0 has # bytes to move
  6. ; A0 has source addre
  7. ; a1 has dest addr
  8.  
  9. @MoveMem128 equ    *
  10.     move.l    (a0)+,(a1)+
  11.     move.l    (a0)+,(a1)+
  12.     move.l    (a0)+,(a1)+
  13.     move.l    (a0)+,(a1)+
  14.     move.l    (a0)+,(a1)+
  15.     move.l    (a0)+,(a1)+
  16.     move.l    (a0)+,(a1)+
  17.     move.l    (a0)+,(a1)+
  18.     move.l    (a0)+,(a1)+
  19.     move.l    (a0)+,(a1)+
  20.     move.l    (a0)+,(a1)+
  21.     move.l    (a0)+,(a1)+
  22.     move.l    (a0)+,(a1)+
  23.     move.l    (a0)+,(a1)+
  24.     move.l    (a0)+,(a1)+
  25.     move.l    (a0)+,(a1)+
  26.     move.l    (a0)+,(a1)+
  27.     move.l    (a0)+,(a1)+
  28.     move.l    (a0)+,(a1)+
  29.     move.l    (a0)+,(a1)+
  30.     move.l    (a0)+,(a1)+
  31.     move.l    (a0)+,(a1)+
  32.     move.l    (a0)+,(a1)+
  33.     move.l    (a0)+,(a1)+
  34.     move.l    (a0)+,(a1)+
  35.     move.l    (a0)+,(a1)+
  36.     move.l    (a0)+,(a1)+
  37.     move.l    (a0)+,(a1)+
  38.     move.l    (a0)+,(a1)+
  39.     move.l    (a0)+,(a1)+
  40.     move.l    (a0)+,(a1)+
  41.     move.l    (a0)+,(a1)+
  42.     rts
  43.     IFD    REGMOVE
  44. @MoveMem equ    *
  45.     move.l    D0,D1
  46.     andi.l    #$1,D1
  47.     beq.s    OKTOGO
  48.     move.b    (a0)+,(a1)+
  49. OKTOGO: move.l    d0,d1
  50.     andi.l    #2,d1
  51.     beq.s    OKTOG2
  52.     move.w    (a0)+,(a1)+
  53. OKTOG2: lsr.l    #2,D0 ; now d0 has # of longwords to move
  54.     move.l    d0,d1
  55.     beq.s    retn2
  56.     and    #1,d1
  57.     beq.s    nor6
  58.     move.l    (a0)+,(a1)+
  59. nor6:
  60.     move.l    D0,d1
  61.     and    #2,d1
  62.     beq.s    nor7
  63.     move.l    (a0)+,(a1)+
  64.     move.l    (a0)+,(a1)+
  65. nor7:
  66.     lsr.l    #2,d0
  67.     beq.s    retn2
  68.     subq.l    #1,d0
  69. m69:
  70.     move.l    (a0)+,(a1)+
  71.     move.l    (a0)+,(a1)+
  72.     move.l    (a0)+,(a1)+
  73.     move.l    (a0)+,(a1)+
  74.     dbra    d0,m69
  75. retn2:    rts
  76.     ENDC
  77.  
  78. @ClearMem equ * ; a0 has address start d0 has the len in bytes
  79.     tst.l    a0
  80.     beq.s    rete
  81.     tst.l    d0
  82.     bne.s    proceed33
  83. rete:    rts
  84. proceed33:
  85.     move.l    d2,-(sp)
  86.     move.l    d0,d2
  87.     andi.l    #3,d2 ; d2 has remainder of 4 byte moves in it
  88.     lsr.l    #2,D0 ; now d0 has # of longwords to move
  89.     beq.s    xty
  90.     move.l    a0,d1
  91.     andi.l    #$1,d1
  92.     beq.s    fineaddr1
  93.     clr.b    (a0)+
  94.     addq.l    #3,d2 ; 3 more bytes to clean up
  95.     subq.l    #1,d0 ; 1 less longword to move
  96.     beq.s    xtz
  97. fineaddr1:
  98.     move.l    a0,d1
  99.     andi.l    #2,d1
  100.     beq.s    fineaddr2
  101.     clr.w    (a0)+
  102.     addq.l    #2,d2
  103.     subq.l    #1,d0
  104.     beq.s    xtz
  105. fineaddr2:
  106.     btst    #0,d0
  107.     beq.s    nor63
  108.     clr.l    (a0)+
  109. nor63:
  110.     btst    #1,d0
  111.     beq.s    nor73
  112.     clr.l    (a0)+
  113.     clr.l    (a0)+
  114. nor73:
  115.     lsr.l    #2,d0
  116.     beq.s    xty
  117. m693:
  118.     clr.l    (a0)+
  119.     clr.l    (a0)+
  120.     clr.l    (a0)+
  121.     clr.l    (a0)+
  122.     subq.l    #1,d0
  123.     bne.s    m693
  124. xty:    tst.l    d2
  125.     beq.s    retokj
  126. xtz:    subq.l    #1,d2
  127. xtx:
  128.     clr.b    (a0)+
  129.     dbra    d2,xtx
  130. retokj:
  131.     move.l    (sp)+,d2
  132.     rts
  133.     end
  134.